import router from '@/router'
import Store from '@/store'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
// 前置守卫
const WhitePath = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  Nprogress.start()
  if (Store.state.user.token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
      // 调用actions中的方法获取用户信息
    } else {
      if (Store.state.user.userInfo.userId) {
        next()
      } else {
        await Store.dispatch('user/getUserInfo')
        next()
      }
    }
  } else {
    if (WhitePath.includes(to.path.toLowerCase())) {
      next()
    } else {
      // fullPath：带参数的地址
      next('/login?redirect=' + to.fullPath)
      // 从导航守卫跳转到登录页时 也需要带上完整的path地址
    }
  }
  Nprogress.done()
})
// 有token
// 如果要去的页面login页
// 回到首页
// 其他页面
// 正常进入

// 没有token
// 如果进入的是不需要登录的页面
// 正常进入
// 如果去的页面是需要登录的
// 跳转到登录页

// 后置守卫 并不是每个路由跳转都会经过后置守卫 因为它当前已处于路由所对应的组件时 你跳转它不会再次触发
router.afterEach(() => {
  console.log('afterEach')
  Nprogress.done()
})
